Transaction isolation level
性能と整合性のトレードオフがあるので、それを調整するということ
Isolation Level が低いと
同時実行性能が高い
ただし、読み取りの不整合が起こり得る
Isolation Level が高いと
データの整合性は強い
ただし、ロックや待ちが増え性能が下がる
前提として、そもそもどういう不整合が起きうるのか?を知っていると、分離レベルの意義を理解しやすい
極論言えば、全てを直列に実行すれば、どのanomalyも起きない
標準的な4種類の Isolation Level
以下は ANSI SQL の4段階
(実際には DB 実装によって挙動がずれることがある)
table:_
アノマリ / 分離レベル ①Read Uncommitted ②Read Committed ③Repeatable ④Serializable
④に行くほど厳しい
つまり不整合は起きづらくなる
が、性能は低くなる
mysql
gpt-5.icon
🔍 4. DBごとの挙動の違い(重要)
DB実装ごとに Isolation Level の内部動作が違う点は非常に重要。
table:_
DB デフォルト 特記事項
PostgreSQL READ COMMITTED SERIALIZABLE は SSI(Serializable Snapshot Isolation)で実現
MySQL InnoDB REPEATABLE READ MVCCが強力で Phantom Read を防ぐ(実質 Serializable寄り)
Oracle READ COMMITTED 実装は独自(Snapshot based)